/* 
 * File:   VentanaJuego.h
 * Author: nahuel
 *
 * Created on November 3, 2012, 3:07 PM
 */

#ifndef VENTANAJUEGO_H
#define	VENTANAJUEGO_H

#include <gtkmm-3.0/gtkmm/drawingarea.h>
#include <string>
#include "Mutex.h"

#include "Dibujador.h"
#include "Partida.h"
#include "../Cliente/Cliente.h"

using namespace std;
using namespace TP::Juego;
using namespace TP::Juego::Arena::Actores;
using namespace TP::Comunicacion;
using namespace TP::Threading;

class VentanaJuego : public Gtk::DrawingArea {
	private:
        
		Dibujador* _dibujador;
		Cliente* _cliente;
		Partida* _partida;
		Mutex _mutex;
        
        // Pajaros
        Glib::RefPtr<Gdk::Pixbuf> _imagenPajaroRojo;
        Glib::RefPtr<Gdk::Pixbuf> _imagenPajaroVerde;
        Glib::RefPtr<Gdk::Pixbuf> _imagenPajaroAzul;

        // Cerdito
        Glib::RefPtr<Gdk::Pixbuf> _imagenCerdito;

        // Huevos
        Glib::RefPtr<Gdk::Pixbuf> _imagenHuevoPoche;
        Glib::RefPtr<Gdk::Pixbuf> _imagenHuevoReloj;
        Glib::RefPtr<Gdk::Pixbuf> _imagenHuevoCodorniz;
        Glib::RefPtr<Gdk::Pixbuf> _imagenHuevoBlanco;	

        // Cajas
        Glib::RefPtr<Gdk::Pixbuf> _imagenCajaMadera;
        Glib::RefPtr<Gdk::Pixbuf> _imagenCajaMetal;
        Glib::RefPtr<Gdk::Pixbuf> _imagenCajaVidrio;

        // Catapulta
        Glib::RefPtr<Gdk::Pixbuf> _imagenCatapulta;
        
        // Monticulo de huevos
        Glib::RefPtr<Gdk::Pixbuf> _imagenMonticuloHuevos;

        // Frutas
        Glib::RefPtr<Gdk::Pixbuf> _imagenManzana;
        Glib::RefPtr<Gdk::Pixbuf> _imagenBanana;
        Glib::RefPtr<Gdk::Pixbuf> _imagenCereza;   

        // Imagen de fondo
        Glib::RefPtr<Gdk::Pixbuf> _fondo;

	protected:
		virtual bool on_draw(const Cairo::RefPtr<Cairo::Context>& context);
		virtual bool on_timeout();
		virtual bool on_button_press_event(GdkEventButton* event);

	public:
		VentanaJuego(Cliente* cliente, float fps);
        
		void SetImagenPajaroRojo(std::string pathImagen);
        void SetImagenPajaroVerde(std::string pathImagen);
        void SetImagenPajaroAzul(std::string pathImagen);

        void SetImagenCerdito(std::string pathImagen);

        void SetImagenHuevoPoche(std::string pathImagen);
        void SetImagenHuevoReloj(std::string pathImagen);
        void SetImagenHuevoCodorniz(std::string pathImagen);
        void SetImagenHuevoBlanco(std::string pathImagen);

        void SetImagenCajaMadera(std::string pathImagen);
        void SetImagenCajaMetal(std::string pathImagen);
        void SetImagenCajaVidrio(std::string pathImagen);

        void SetImagenCatapulta(std::string pathImagen);
        
        void SetImagenMonticuloHuevos(std::string pathImagen);

        void SetImagenManzana(std::string pathImagen);
        void SetImagenBanana(std::string pathImagen);
        void SetImagenCereza(std::string pathImagen);

        void SetImagenFondo(std::string pathImagen);
        
        void SetPartida(Partida* partida);

        virtual ~VentanaJuego();	
};

#endif	/* VENTANAJUEGO_H */